from .base_element import BaseElement


class TextArea(BaseElement):
    '''
    Jres2.0富文本框操作

    :Attributes:
     - _driver: 控件所在的当前webdriver对象
     - _element: 控件元素webelement对象
     - timeout: 步骤操作的超时时间

    :Raises:
        当以文本找不到对应button时则抛出SeleniumError异常

    :Example:
     - 例1: TextArea(webelement)
     - 例2: TextArea({By.NAME:'name'})
     - 例3: TextArea({By.CLASS_NAME:'class_name','text':'文本信息'})
     - 例4: TextArea({By.CLASS_NAME:'class_name','text':'文本信息'}, father=driver)
     - 例5: TextArea({By.CLASS_NAME:'class_name','text':'文本信息'}, father=webelement)
    '''

    def __init__(self, element_para, father=None, timeout=5):
        super().__init__(element_para, father, timeout)
        
    def set_value(self, value):
        '''
        Jres2.0 文本框填充

        :Args:
         - text: 填充值
         
        :Example:
         - 例: textarea.set_value("12345")
        '''
        self._element.focus()
        self._element.clear()
        self._element.send_keys(value)

    def is_readonly(self):
        '''
        Jres2.0 检查文本框是否只读

        :Return:
            返回文本框是否只读
            
        :Example:
         - 例: textarea.is_readonly()
        '''
        self._element.focus()
        return self._element.is_readonly()

    def clear(self):
        '''
        Jres2.0 文本框清空
        
        :Example:
         - 例: textarea.clear()
        '''
        self._element.focus()
        self._element.clear()
        
    def set_value_double_click(self, inputele, text):
        '''
        Jres2.0 的多行文本框填充

        :Args:
         - inputele: 多行文本框控件
         - text: 填充值
         
        :Example:
         - 例: textarea.set_value_double_click()
        '''
        inputele.clear()
        inputele.double_click()
        inputele.send_keys(text)